'----------------------------------------------
' Name: Ali Karbassi & Mike Raasch
' Date: April 10, 2007
' Description: Project 6
'              Enum QuestionMode
'              Interface IQuestion
'----------------------------------------------

''' <summary>
''' The enumeration type is used by the interface
''' </summary>
''' <remarks></remarks>
Public Enum QuestionMode
	Creating
	Taking
End Enum

Public Interface IQuestion

   ''' <summary>
   ''' The height of the control
   ''' </summary>
   ''' <value></value>
   ''' <returns></returns>
   ''' <remarks></remarks>
   ReadOnly Property height() As Integer

   ''' <summary>
   ''' The height of the control
   ''' </summary>
   ''' <value></value>
   ''' <returns></returns>
   ''' <remarks></remarks>
   ReadOnly Property width() As Integer

   ''' <summary>
   ''' Displays a question at point Pos of theForm and then increases the height of theForm by the height of 
   ''' the control.
   ''' 
   ''' When theMode is Creating
   '''    TextBox for the question should be Read/Write
   '''    Key should be displayed
   '''    Choice textboxes of MultiCHoice class should be Read/Write
   '''    txtComment of Comment class should be ReadOnly
   ''' 
   ''' When theMode is Taking
   '''    TextBox for the question should be ReadOnly
   '''    Key should NOT be displayed
   '''    Choice textboxes for MultiCHoice class should be ReadOnly
   '''    txtComment for Comment class should be Read/Write
   ''' 
   ''' Set a private field _mode to theMode
   ''' </summary>
   ''' <param name="Pos"></param>
   ''' <param name="theForm"></param>
   ''' <param name="theMode"></param>
   ''' <remarks></remarks>
	Sub Display(ByVal Pos As Point, ByVal theForm As Form, ByVal theMode As QuestionMode)

   ''' <summary>
   ''' Removes the question from theForm and then decreases the height of theForm by the height of the control.
   ''' </summary>
   ''' <param name="theForm"></param>
   ''' <remarks></remarks>
	Sub Remove(ByVal theForm As Form)

   ''' <summary>
   ''' Checks if the question is completed and throws an exception if not completed. Saves the key for 
   '''    TrueFalse and MultiChoice.
   ''' </summary>
   ''' <remarks></remarks>
	Sub Save()

   ''' <summary>
   ''' Sets or Reads the question index, which can be stored as the Text of lblIndex.
   ''' </summary>
   ''' <value></value>
   ''' <returns></returns>
   ''' <remarks></remarks>
	Property Index() As Integer

   ''' <summary>
   ''' Returns 1 if correct, 0 otherwise (including no answer)
   ''' For Comment, returns 1 if answer is not null string, 0 otherwise 
   ''' </summary>
   ''' <returns></returns>
   ''' <remarks></remarks>
	Function Score() As Integer

   ''' <summary>
   ''' Any part of the question changed, excluding the index. 
   ''' Raised when creating or editing the question.
   ''' </summary>
   ''' <remarks></remarks>
	Event Changed()

End Interface
